package com.banyuan.lesson.thread.线程池;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TestPool {
    public static void main(String[] args) {
        /*
        * corePoolSize:核心线程数；
        * maximumPoolSize:最大线程数；
        * keepAliveTime:非核线程在闲置情况下的存活时间；
        * TimeUnit:时间单位；
        * BlockingQueue:任务队列；
        *
        * RejectExecutionHandler:拒绝处理器；
        * ThreadFactory:线程工程，利用工厂模式来生产线程；
        *
        * 阿里建议自定义线程池；
        * 防止线程数量爆炸，导致OOM异常；*/


        //缓存线程池，并发量太大，会导致OOM；
        //可以重复使用线程对象
        ExecutorService cache = Executors.newCachedThreadPool();

        //固定数量线程池，拥有一个无界队列，但是并发量太大，会导致OOM；
        ExecutorService fixed = Executors.newFixedThreadPool(10);

        //单列线程池，只有一个线程，拥有一个无界队列，导致任务爆炸，也不适合高并发；
        ExecutorService single = Executors.newSingleThreadExecutor();

        //执行延迟任务的线程池 DelayedWorkQueue;
        ExecutorService scheduled = Executors.newScheduledThreadPool(10);




    }
}
